白話來說選擇排序容易實現,但時間複雜度較高不適合用於大規模數據的排序~
使用了兩個嵌套的迴圈
Step1:第一個迴圈從第一個開始遍歷後面未排序的元素
Step2:第二個迴圈與其他未排序元素中尋找最小的元素並進行交換位置
這樣就保證每一次的迴圈的元素的該位置都是最小值就相當於程式跑完全部數列就會由小到大排序啦~~~
第一次選擇(i=0):
從索引 0 開始,找到未排序部分的最小值,也就是 11
交換索引 0 與最小值所在位置,這樣列表變為 [11, 34, 25, 12, 22, 64, 90]
第二次選擇(i=1):
從索引 1 開始,找到未排序部分的最小值,也就是 12
交換索引 1 與最小值所在位置,這樣列表變為 [11, 12, 25, 34, 22, 64, 90]
第三次選擇(i=2):
從索引 2 開始,找到未排序部分的最小值,也就是 22
交換索引 2 與最小值所在位置,這樣列表變為 [11, 12, 22, 34, 25, 64, 90]
...
第七次選擇(i=6):
從索引 6 開始,找到未排序部分的最小值,也就是 90
交換索引 6 與最小值所在位置,這樣列表保持不變
def selection_sort(arr):
n = len(arr)
# Step1:第一個迴圈從第一個開始遍歷後面未排序的元素
for i in range(n-1):
min_idx = i
# Step2:第二個迴圈與其他未排序元素中尋找最小的元素並進行交換位置
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
# 使用範例
my_list = [64, 34, 25, 12, 22, 11, 90]
selection_sort(my_list)
print("排序後的列表:", my_list)